Technical Field
Embodiments described herein relate to virtualization and more particularly, to resource utilization monitoring and control in a virtualization environment.
Description of the Related Art
Virtualization has been used in computer systems for a variety of different purposes. It is common in virtualization to execute privileged software in a “container” to prevent the privileged software from directly accessing and/or making changes to at least some of the physical machine state without first being permitted to do so by a virtual machine manager (VMM) (or hypervisor) that controls the virtual machine. Privileged programs may include operating systems, and may also include other software which expects to have full control of the hardware on which the software is executing.
Generally, virtualization of a processor or computer system may include providing one or more privileged programs with access to a virtual machine (the container mentioned above) over which the privileged program has full control, but the control of the physical machine is retained by the hypervisor. The virtual machine may include a processor (or processors), memory, and various peripheral devices that the privileged program expects to find in the machine on which it is executing. The virtual machine elements may be implemented by hardware that the hypervisor allocates to the virtual machine, at least temporarily, and/or may be emulated in software. Each privileged program (and related software in some cases, such as the applications that execute on an operating system) may be referred to herein as a guest.
Virtualization is also increasingly being used in cloud computing environments. Cloud computing refers to the use of a network of servers hosted on a public network (e.g., the Internet) to provide computing services to one or more users. For example, the resources of physical servers in server farms can be bundled and sold to customers as blocks of service in the form of processing power, memory, and storage. The types of resource units that are sold to customers may vary from embodiment to embodiment. For example, one type of resource unit may be denoted as a single virtual processor. A single virtual processor may represent an amount of processing power which is actually provided by different cores on a physical processor, different processors on the same physical server, or processing cores on different physical servers. Other resource units (e.g., cache space, memory space, memory bandwidth, I/O bandwidth) may be provided in a similar fashion.
When providing virtualization services to a large number of guest virtual machines (VMs), loading a cloud-based system to maximize a performance parameter (e.g., memory utilization, CPU utilization) may result in contention that impacts the performance achievable by a given customer's VM, breaking service level agreement (SLA) terms, which could have financial consequences. Accordingly, cloud resources are often kept under-utilized just to ensure there is enough headroom to guarantee the performance levels specified in SLAs or other agreements.